package com.example.dto;

import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.Data;

import java.io.Serializable;
import java.util.Collections;
import java.util.List;

@Data
public class PageDTO<T> implements Serializable {
    // 总条数
    private Long totals;
    // 总页数
    private Long pages;
    // 结果集合
    private List<T> list;

    public static <PO,VO> PageDTO<VO> of(Page<PO> p,Class<VO> clazz) {
        PageDTO<VO> dto = new PageDTO<>();
        dto.setTotals(p.getTotal());
        dto.setPages(p.getPages());
        List<PO> records = p.getRecords();
        if(records.isEmpty()){
            dto.setList(Collections.emptyList());
            return dto;
        }
        dto.setList(BeanUtil.copyToList(records, clazz));
        return dto;
    }
}
